import React, { Component } from "react";
import { Route, Redirect } from "react-router-dom";
//路由守卫
class FrontendAuth extends Component {
  // eslint-disable-next-line no-useless-constructor
  constructor(props) {
    super(props);
  }
  render () {
    const { routerConfig, location } = this.props;
    const { pathname } = location;//当前访问的路由路径
    //获取登录凭证
    const isLogin = sessionStorage.getItem("username");
    // 判断当前路由是否在预设路由中
    const targetRouterConfig = routerConfig.find(
      (item) => item.path === pathname
    );
    // 在未登录状态下，主页和登录页可直接访问
    if ((pathname === '/' || pathname === '/login') && !isLogin) {
      const { component } = targetRouterConfig;
      return <Route exact path={pathname} component={component} />;
    }
    if (isLogin) {
      // 如果是登陆状态，想要跳转到登陆，重定向到主页
      if (pathname === "/login" || pathname === "/") {
        return <Redirect to="/cpo" />;
      } else {
        // 如果路由合法，就跳转到相应的路由
        if (targetRouterConfig) {
          return (
            <Route path={pathname} component={targetRouterConfig.component} exact key={pathname} />
          );
        } else {
          // 如果路由不合法，重定向到 404 页面
          return <Redirect to="/404" />;
        }
      }
    } else {
      // 非登陆状态下，当路由合法时且需要权限校验时，跳转到登陆页面，要求登陆
      if (targetRouterConfig) {
        return <Redirect to="/login" />;
      } else {
        // 非登陆状态下，路由不合法时，重定向至 404
        return <Redirect to="/404" />;
      }
    }
  }
}
export default FrontendAuth;